package tagTest

import (
	"encoding/json"
	"fmt"
	"reflect"
)

func jsonTagTest() {
	str := `{"qw":"test1","ww":"test2"}`
	x := []byte(str)
	jsonObj := new(jsonTest1)
	err := json.Unmarshal(x, &jsonObj)
	if err != nil {
		fmt.Println("json err:", err)
		return
	}
	fmt.Println(jsonObj.A, "         ", jsonObj.B)

	fmt.Println("---------------")

	str2 := `{"q":"asdf","b":"abcd"}`
	x2 := []byte(str2)
	jsonObj2 := new(jsonTest2)
	err = json.Unmarshal(x2, &jsonObj2)
	if err != nil {
		fmt.Println("json err:", err)
		return
	}
	fmt.Println(jsonObj2.A, "         ", jsonObj2.B)

	if test, ok := reflect.TypeOf(jsonObj2).Elem().FieldByName("A"); ok {
		fmt.Println(test.Tag)
	}

}

type jsonTest1 struct {
	A string `json:"qw"`
	B string `json:"ww"`
}
type jsonTest2 struct {
	A string `sss`
	B string `ssss`
	C func() string
}
